package com.settlement.system.model.entity.common;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.converter.DateFormatConvert;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 收退款-京东对账明细
 * @author Ximi
 * @since 2020-06-15
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9,fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblJdBillDetail extends BaseModel implements Serializable {


    /**
     * 店铺编码
     */
    @ExcelProperty(value = "店铺编码")
    @ApiModelProperty(value = "店铺编码",required = true)
    @NotNull(message = "店铺编码不能为空")
    private String shopNo;

    /**
     * 店铺名称
     */
    @ExcelProperty(value = "店铺名称")
    @ApiModelProperty(value = "店铺名称")
    private String shopName;

    /**
     * 订单编号
     */
    @ExcelProperty(value = "订单编号")
    @ApiModelProperty(value = "订单编号",required = true)
    @NotNull(message = "订单编号不能为空")
    private String orderNo;

    /**
     * 单据编号
     */
    @ExcelProperty(value = "单据编号")
    @ApiModelProperty(value = "单据编号",required = true)
    @NotNull(message = "单据编号不能为空")
    private String billNo;

    /**
     * 单据类型
     */
    @ExcelProperty(value = "单据类型")
    @ApiModelProperty(value = "单据类型",required = true)
    @NotNull(message = "单据类型不能为空")
    private String billType;

    /**
     * 商品编号
     */
    @ExcelProperty(value = "商品编号")
    @ApiModelProperty(value = "商品编号")
    private String itemNo;

    /**
     * 商户订单号
     */
    @ExcelProperty(value = "商户订单号")
    @ApiModelProperty(value = "商户订单号")
    private String merchantOrderNo;

    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品名称")
    @ApiModelProperty(value = "商品名称")
    private String itemName;

    /**
     * 结算状态
     */
    @ExcelProperty(value = "结算状态")
    @ApiModelProperty(value = "结算状态")
    private String settleStatus;

    /**
     * 费用发生时间
     */
    @ExcelProperty(value = "费用发生时间",converter = DateFormatConvert.class)
    @ApiModelProperty(value = "费用发生时间")
    @JsonFormat(pattern="yyyy/MM/dd HH:mm:ss",timezone = "GMT+8")
    private Date costHappenTime;

    /**
     * 费用计费时间
     */
    @ExcelProperty(value = "费用计费时间",converter = DateFormatConvert.class)
    @ApiModelProperty(value = "费用计费时间")
    @JsonFormat(pattern="yyyy/MM/dd HH:mm:ss",timezone = "GMT+8")
    private Date costStartCountTime;

    /**
     * 费用结算时间
     */
    @ExcelProperty(value = "费用结算时间",converter = DateFormatConvert.class)
    @ApiModelProperty(value = "费用结算时间",required = true)
    @JsonFormat(pattern="yyyy/MM/dd",timezone = "GMT+8")
    @NotNull(message = "费用结算时间不能为空")
    private Date costSettleTime;

    /**
     * 费用项
     */
    @ExcelProperty(value = "费用项")
    @ApiModelProperty(value = "费用项",required = true)
    @NotNull(message = "费用项不能为空")
    private String costProject;

    /**
     * 金额
     */
    @ExcelProperty(value = "金额")
    @ApiModelProperty(value = "金额",required = true)
    @NotNull(message = "金额不能为空")
    private BigDecimal amount;

    /**
     * 币种
     */
    @ExcelProperty(value = "币种")
    @ApiModelProperty(value = "币种")
    private String coinType;

    /**
     * 商家应收/应付
     */
    @ExcelProperty(value = "商家应收/应付")
    @ApiModelProperty(value = "商家应收/应付")
    private String merchantRecevieOrPayment;

    /**
     * 钱包结算备注
     */
    @ExcelProperty(value = "钱包结算备注")
    @ApiModelProperty(value = "钱包结算备注")
    private String walletSettleRemark;

    /**
     * 店铺号
     */
    @ExcelProperty(value = "店铺号")
    @ApiModelProperty(value = "店铺号")
    private String storeNumber;

    /**
     * 京东门店编号
     */
    @ExcelProperty(value = "京东门店编号")
    @ApiModelProperty(value = "京东门店编号")
    private String jdStoreNumber;

    /**
     * 品牌门店编号
     */
    @ExcelProperty(value = "品牌门店编号")
    @ApiModelProperty(value = "品牌门店编号",required = true)
    private String brandStoreNumber;

    /**
     * 门店名称
     */
    @ExcelProperty(value = "门店名称")
    @ApiModelProperty(value = "门店名称")
    private String storeName;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 收支方向
     */
    @ExcelProperty(value = "收支方向")
    @ApiModelProperty(value = "收支方向",required = true)
    @NotNull(message = "收支方向不能为空")
    private String receiveOrPayment;

}
